<template>
  <div>
    <div>子组件：{{ msg }}</div>
  </div>
</template>

<script>
import mqtt from 'mqtt';
import {
  MQTT_SERVICE,
  MQTT_USERNAME,
  MQTT_PASSWORD
} from '@/utils/sysconstant.js';
var client;
const options = {
  connectTimeout: 40000,
  clientId: 'mqtitId-Home',
  username: MQTT_USERNAME,
  password: MQTT_PASSWORD,
  clean: true
};
client = mqtt.connect(MQTT_SERVICE, options);

export default {
  name: 'viewtest',
  data () {
    return {
      msg: ''
    };
  },
  created () {
    this.mqttMSG();
  },
  methods: {
    mqttMSG () {
      // mqtt连接
      client.on('connect', e => {
        // console.log('连接成功:');
        client.subscribe('data/message', { qos: 2 }, error => {
          if (!error) {
            // console.log('订阅成功');
          } else {
            console.log('订阅失败');
          }
        });
      });
      // 接收消息处理
      client.on('message', (topic, message) => {
        const msg = JSON.parse(message.toString());
        this.msg = msg;
        console.log(this.msg);

        // 发送给父组件
        this.$emit('sendMsg', this.msg);
        Object.keys(msg).forEach(function (key) {
          console.log(key, msg[key]);
        });
      });
      // 断开发起重连
      client.on('reconnect', error => {
        console.log('正在重连:', error);
      });
      // 链接异常处理
      client.on('error', error => {
        console.log('连接失败:', error);
      });
    }
  }
};
</script>
